<%@page import="model.Rol"%>
<%@page import="dao.RolDAO"%>
<%@page import="dao.UsuarioDAO"%>
<%@page import="model.Usuario"%>
<%@page import="java.text.ParseException"%>
<%@page import="java.util.List"%>
<%
   String roles = (String)session.getAttribute("roles");
   if(roles==null){
       response.sendRedirect("/SICOM_CCI"); 
   } else {
       session.setAttribute("roles", roles);
   }
   int idUsr = 0;
   Usuario usr = new Usuario();
   usr.setIdUsuario(idUsr);
   String rolesUsuario = "";
   try {
       idUsr = Integer.parseInt(request.getParameter("idUsr"));
       UsuarioDAO usuarioDaoManager = new UsuarioDAO();
       usr = usuarioDaoManager.obtenerUsuarioPorId(idUsr);
       if(usr!=null){
           rolesUsuario = usuarioDaoManager.obtenerRolesDeUsuario(idUsr).replace("\"", "");
       }
   } catch (NumberFormatException nfex){
       out.print("error de formato: " + nfex.getMessage());
   }
%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:include page="../../_MaintLayout.html"/>
<div class="container bs-docs-container">
    <div class="alert alert-danger">
        <button type="button" class="closeAlert btn-link" aria-hidden="true">&times;</button>
        <div id="mensaje"></div>
    </div>
    <div class="alert alert-success">
        <button type="button" class="closeAlert btn-link" aria-hidden="true">&times;</button>
        <div id="mensaje"></div>
    </div>
    <h3><% if(idUsr==0)out.print("Nuevo"); else out.print("Editar"); %> usuario</h3>
    <div class="col-sm-6 col-md-6">
        <div class="form-group">
            <form class="form-group" name="addUser" action="../../controller/UsuarioController.jsp" method="post" role="form">
                
                <div class="form-group idUsuarioDiv" hidden="true">
                    <label for="idusuario" class="col-sm-4 control-label"> idUsuario</label>
                    <div class="col-sm-8">
                        <input type="text" class="form-control toSend" id="idusuario" name="idUsuario" placeholder="idUsuario" 
                               value="<%out.print(idUsr); %>" >
                    </div>
                </div>
                
                <div class="form-group usuarioDiv">
                    <label for="usuario" class="col-sm-4 control-label">Usuario</label>
                    <div class="col-sm-8">
                        <input type="text" class="form-control toSend" id="usuario" name="nomUsuario" placeholder="Usuario" 
                               value="<%if(usr.getNomUsuario()!=null && !usr.getNomUsuario().isEmpty()) out.print(usr.getNomUsuario()); %>" >
                    </div>
                </div>
                
                <div class="form-group contraDiv">
                    <label for="contra" class="col-sm-4 control-label">Contrase&ntilde;a</label>
                    <div class="col-sm-8">
                        <input type="password" class="form-control toSend" id="contra" name="contraUsuario" placeholder="Contrase&ntilde;a"
                               value="<%if(usr.getNomUsuario()!=null && !usr.getNomUsuario().isEmpty()) out.print(usr.getNomUsuario()); %>" >
                    </div>
                </div>
                
                <div class="form-group contra2Div">
                    <label for="contra2" class="col-sm-4 control-label">Confime contrase&ntilde;a</label>
                    <div class="col-sm-8">
                        <input type="password" class="form-control" id="contra2" name="contra2" placeholder="Contrase&ntilde;a"
                               value="<%if(usr.getNomUsuario()!=null && !usr.getNomUsuario().isEmpty()) out.print(usr.getNomUsuario()); %>" >
                    </div>
                </div>
                
                <div class="form-group nombreDiv">
                    <label for="nombre" class="col-sm-2 control-label">Nombres</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control toSend" id="nombre" name="nombreUsuario" placeholder="Nombre" 
                               value="<%if(usr.getNombreUsuario()!=null && !usr.getNombreUsuario().isEmpty()) out.print(usr.getNombreUsuario()); %>">
                    </div>
                </div>

                <div class="form-group apellidoDiv">
                    <label for="apellido" class="col-sm-2 control-label">Apellidos</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control toSend" id="apellido" name="apelUsuario" placeholder="Apellido" 
                               value="<%if(usr.getApelUsuario()!=null && !usr.getApelUsuario().isEmpty()) out.print(usr.getApelUsuario()); %>">
                    </div>
                </div>
                
                <div class="form-group telefonoDiv">
                    <label for="telefono" class="col-sm-2 control-label">Tel&eacute;fono</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control toSend" id="telefono" name="telUsuario" placeholder="Tel&eacute;fono" 
                               value="<%if(usr.getTelUsuario()!=null && !usr.getApelUsuario().isEmpty()) out.print(usr.getTelUsuario()); %>">
                    </div>
                </div>
                
                <div class="form-group correoDiv">
                    <label for="correo" class="col-sm-2 control-label">Correo</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control toSend" id="correo" name="correoUsuario" placeholder="Correo" 
                               value="<%if(usr.getCorreoUsuario()!=null && !usr.getCorreoUsuario().isEmpty()) out.print(usr.getCorreoUsuario()); %>">
                    </div>
                </div>
                    
                <div class="form-group rolesDiv">
                    <label for="roles" class="col-sm-2 control-label">Roles</label>
                    <div class="col-sm-8">
                        <input type="text" class="form-control toSend" id="roles" name="roles" placeholder="Roles" 
                               value="<%out.print(rolesUsuario);%>" disabled>
                    </div>
                    <button type="button" id="CTG_roles" name="CTG_roles" class="btn btn-default">
                        <span class="ui-icon ui-icon-newwin"></span>
                        <span></span>
                    </button>
                    
                </div>
                    
                <div class="form-group">
                    <div class="col-sm-3 col-sm-9" style="float:left;">
                        <button type="submit" id="guardar" class="btn btn-primary">
                            <span class="ui-icon ui-icon-disk"></span>
                            <span>Guardar</span>
                        </button>
                    </div>
                    <img class="cargando" src="/SICOM_CCI/view/img/ajax-loader.gif"/>
                </div>
            </form>
        </div>
    </div>
</div>
<div id="CTG_roles_contenedor" style="display: none;" title="Roles disponibles">
    <div style="overflow: auto; float: left; height: 150px; width: 200px;">
    <%
        RolDAO rolDaoManager = new RolDAO();
        List<Rol> rolesDisp = rolDaoManager.obtenerRoles();
        for(Rol r : rolesDisp){
            
            %>
            <span>
                <input type="checkbox" id="<%out.print(r.getNomRol());%>" name="<%out.print(r.getNomRol());%>" class="rolCheck" />
                <label><%out.print(r.getDescripRol());%></label>
            </span> <br/>
            <%
        }
    %>
    </div>
</div>
<jsp:include page="../../_FooterLayout.html"/>
<script type="text/javascript">
    if($('#idusuario').val()!=0){
        $('#usuario').prop('disabled', true);
    }
    $('#guardar').click(function(event) {
        event.preventDefault();
        var pattTelefono = new RegExp("[0-9]{8}");
        var pattCorreo = new RegExp("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
        var pattNombre = new RegExp("[A-Za-z- ]{2,}");
        var pasa = true;
        var idUsuario = $('#idusuario').val();
        var usuario = $('#usuario').val();
        var contra = $('#contra').val();
        var nombre = $('#nombre').val();
        var apellido = $('#apellido').val();
        var telefono = $('#telefono').val();
        var correo = $('#correo').val();
        var roles = $('#roles').val();
        
        var campos = '';
        
        if(usuario==''){
            pasa = false;
            $('.usuarioDiv').addClass('has-error');
            campos = '<li>Usuario</li>';
        }
        if(contra == '' && $('#idusuario').val()==0){
            pasa = false;
            $('.contraDiv').addClass('has-error');
            campos = campos + '<li>Contrase&ntilde;a</li>';
        }else {
            if(contra != $('#contra2').val()){
                pasa = false;
                campos = campos + '<li>Contrase&ntilde;a</li>';
                $('.contraDiv').addClass('has-error');
                $('.contra2Div').addClass('has-error');
                $(".alert-danger").hide();
                $('.alert-danger').children('#mensaje').html('<p>Las contrase&ntilde;as no coinciden.</p>');
                $(".alert-danger").show('slow');
                return;
            }
        }
        if(nombre == '' && !pattNombre.test(nombre)){
            pasa = false;
            campos = campos + '<li>Nombre</li>';
            $('.nombreDiv').addClass('has-error');
        }
        if(apellido == '' && !pattNombre.test(apellido)){
            pasa = false;
            campos = campos + '<li>Apellido</li>';
            $('.apellidoDiv').addClass('has-error');
        }
        if(telefono.length>0 && !pattTelefono.test(telefono)){
            pasa = false;
            campos = campos + '<li>Tel&eacute;fono</li>';
            $('.telefonoDiv').addClass('has-error');
        }
        if(correo.length>0 && !pattCorreo.test(correo)){
            pasa = false;
            campos = campos + '<li>Correo</li>';
            $('.correoDiv').addClass('has-error');
        }
        if(roles == ''){
            pasa = false;
            campos = campos + '<li>Roles</li>';
            $('.rolesDiv').addClass('has-error');
        }
        if(pasa){
            var json = crearJsonData_form($(this).parent().parent().parent());
            
            if($('#idusuario').val()==0){
                ajaxPost("../../controller/UsuarioController.jsp","insertUsr="+json, "json", "insertUsr");
            } else {
                ajaxPost("../../controller/UsuarioController.jsp","updateUsr="+json, "json", "updateUsr");
            }
        } else {
             $(".alert-danger").hide();
             $('.alert-danger').children('#mensaje').html('Se encontraron algunos errores, por favor revise: <br/> <ul>'
                                + campos + '</ul>');
             $(".alert-danger").show('slow');
        }
    });
    $('#usuario , #contra, #contra2, #nombre, #apellido, #correo, #telefono').keyup(function(event){
        $(event.target).parent().parent().removeClass('has-error');
        switch(event.target.id){
            case 'nombre':
            case 'apellido':
                var pattNombre = new RegExp("[A-Za-z- ]{0,}");
                if($(event.target).val().match(pattNombre).toString() != $(event.target).val()){
                    $(event.target).val($(event.target).val().substring(0, $(event.target).val().length-1));
                }
                $(event.target).val(CapitalLetter($(event.target).val()));
                break;
            case 'correo':
                var pattCorreo = new RegExp("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
                if(!pattCorreo.test($(event.target).val())){
                    $(event.target).parent().parent().addClass('has-error');
                }
                break;
            case 'telefono':
                var pattTelefono = new RegExp("[0-9]{0,8}");
                if($(event.target).val().match(pattTelefono).toString() != $(event.target).val()){
                    $(event.target).val($(event.target).val().substring(0, $(event.target).val().length-1));
                }
                break;
        }
    });
</script>